1
システムプログラミングにおけるオブジェクト指向の再定義
AI034Lesson 17
00:00

Rustにおけるオブジェクト指向の再定義は、厳格なクラス階層から離れ、 データと振る舞いの分離に注目したモデルへ移行することを意味します。従来のシステム言語は複雑なオブジェクトツリーに依存していますが、Rustは トレイト トレイトとモジュールを使用して、実行時コストなしにメモリ安全を最優先にオブジェクト指向設計の目標(カプセル化とポリモーフィズム)を達成します。

1. 階層の挑戦

Rustは明確に実装継承を避け、 不安定な基底クラス 問題を回避するためです。代わりに、構成と トレイト 異なる型間で共有される振る舞いを定義することを好む。ここでいう「オブジェクト」とは、データ(構造体)と手続き(implブロック)の組み合わせであり、コンパイル時に検証される。

基底クラス従来の階層トレイト(振る舞い)Rustの構成"オブジェクト指向プログラムはオブジェクトで構成される。オブジェクトはデータとそのデータに対して操作を行う手続きを一緒にパッケージ化する。"— GoF、p.491

2. 並行処理と状態を型として表現

Rustは並行処理を主に標準ライブラリ(SendSync トレイト)を通じて扱い、言語のコア部分ではなく、より安全を最大化するために 状態を型として表現するアルゴリズム 異なる状態を異なる型にエンコードします。状態遷移は新しいインスタンスを返却し、ランタイムでの if 条件分岐のロジックをコンパイル時要件に移動します。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>